package br.com.hectordufau.rpgiiidetmobile;

import java.util.ArrayList;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

public class PersonagemManager {
	
	private OpenDbHelper dbHelper;
	private static final String P_TABLE = "Personagem";
	private static final String P_ID = "id";
	private static final String P_NOME = "nome";
	private static final String P_PONTOS = "pontos";
	private static final String P_F = "forca";
	private static final String P_H = "habilidade";
	private static final String P_R = "resistencia";
	private static final String P_A = "armadura";
	private static final String P_PDF = "poderdefogo";
	private static final String P_PV = "pontosdevida";
	private static final String P_PM = "pontosdemagia";
	private static final String P_EXP = "experiencia";
	private static final String P_ACC = "ataquecorpo";
	private static final String P_AD = "ataquedistancia";
	private static final String P_DEF = "defesa";
	private static final String SELECT_P = "SELECT * FROM " + P_TABLE;
	
	public PersonagemManager(Context context) 
	{
		dbHelper = new OpenDbHelper(context, P_TABLE, P_ID + "," 
				+ P_NOME + "," + P_PONTOS + "," + P_F + "," 
				+ P_H + "," + P_R + "," + P_A + "," + P_PDF + ","
				+ P_PV + "," + P_PM + "," + P_EXP + "," + P_ACC + ","
				+ P_AD + "," + P_DEF);
	}

	public boolean insert(String pId, String pNome, int pPontos, int pForca, int pHabilidade, int pResistencia, int pArmadura, int pPoderdefogo, int pPontosdevida, int pPontosdemagia, int pExperiencia, int pAtaquecorpo, int pAtaquedistancia, int pDefesa) 
	{
		try 
		{
			SQLiteDatabase sqlite = dbHelper.getWritableDatabase();
			ContentValues initialValues = new ContentValues();
			initialValues.put(P_ID, pId);
			initialValues.put(P_NOME, pNome);
			initialValues.put(P_PONTOS, pPontos);
			initialValues.put(P_F, pForca);
			initialValues.put(P_H, pHabilidade);			
			initialValues.put(P_R, pResistencia);			
			initialValues.put(P_A, pArmadura);
			initialValues.put(P_PDF, pPoderdefogo);
			initialValues.put(P_PV, pPontosdevida);
			initialValues.put(P_PM, pPontosdemagia);
			initialValues.put(P_EXP, pExperiencia);
			initialValues.put(P_ACC, pAtaquecorpo);
			initialValues.put(P_AD, pAtaquedistancia);
			initialValues.put(P_DEF, pDefesa);
			sqlite.insert(P_TABLE, null, initialValues);
		} 
		catch (SQLException sqlerror) 
		{
			Log.v("Insert into table error", sqlerror.getMessage());
			return false;
		}		
		return true;
	}

	public ArrayList<Personagem> getPersonagens() 
	{
		ArrayList<Personagem> personagens = new ArrayList<Personagem>();
		SQLiteDatabase sqliteDB = dbHelper.getReadableDatabase();
		Cursor crsr = sqliteDB.rawQuery(SELECT_P, null);
		crsr.moveToFirst();
		for (int i = 0; i < crsr.getCount(); i++)
		{
			personagens.add(new Personagem(crsr.getString(0), crsr.getString(1), crsr.getInt(2), crsr.getInt(3), crsr.getInt(4), crsr.getInt(5), crsr.getInt(6), crsr.getInt(7), crsr.getInt(8), crsr.getInt(9), crsr.getInt(10), crsr.getInt(11), crsr.getInt(12), crsr.getInt(13)));
			crsr.moveToNext();
		}
		return personagens;
	}

	public void clear() 
	{
		try 
		{
			SQLiteDatabase sqlite = dbHelper.getWritableDatabase();
			sqlite.delete(P_TABLE, "", null);			
		} 
		catch (SQLException sqlerror) 
		{
			Log.v("delete from table error", sqlerror.getMessage());
		}			
	}
}